// 给定一个正整数数组nums和整数k，找出该数组内乘积小于k的连续的子数组的个数

// 步骤
// 1. 使用两个指针left和right分别指向滑动窗口的左右边界，保证窗口内所有数的乘积小于k
// 2. 一开始left和right都指向0
// 3. 向右移动right，将右侧元素加入到乘积中
// 4. 如果乘积大于k，右移left，缩小滑动窗口长度，并更新乘积结果
// 5. 记录答案个数，继续右移right，直到越界

function numSubarrayProductlessThanK(arr, k) {
    if (k <= 1 ) {
        return 0
    }
    let size = arr.length
    let left = 0
    let right = 0
    let window_product = 1
    let count = 0

    while (right < size) {
        window_product *= arr[right]

        while (window_product >= k) {
            window_product /= arr[left]
            left += 1
        }
        count += (right - left + 1)
        right += 1
    }
    return count
}

let arr = [10, 5, 2, 6]
let k = 100
console.log(numSubarrayProductlessThanK(arr, k));


